Repository navigation
Conversation
Render submitted plans as transcript artifacts, expose plan state in footer and tree views, and reopen decisions only at safe interactive lifecycle boundaries. Preserve startup prompts and restored continuations across navigation and session rebinds.
Issacboy123
left a comment
There was a problem hiding this comment.
Making plans first-class transcript artifacts with a dedicated decision UI is the right direction. That UI is also the human authorization surface, but it omits some raw Markdown fields, such as link titles, which the implementation prompt still receives. Have the decision component and continuation consume the same canonical representation. Essentially, #79 is where the markdown issue originates from, while #88 exposes the issue to the user.
| box.addChild(new Spacer(1)); | ||
| box.addChild( | ||
| new Markdown( | ||
| plan.markdown, |
There was a problem hiding this comment.
The Markdown renderer omits source metadata such as link titles, while acceptance later sends the raw plan.markdown to the implementation model. Please render or canonicalize the exact representation that will be sent so the user cannot approve a view that hides instructions.
Summary
Presents submitted plans in the TUI: a rendered plan artifact in the transcript, plan state in the footer and tree selector, and a decision prompt that reopens only at safe lifecycle boundaries.
This is the second half of #72.
Reasoning
A submitted plan previously had no interactive affordance, so a user could not accept or reject one without leaving the session.
The decision prompt is suppressed rather than force-reopened after an explicit dismissal, because repeatedly stealing the editor for a plan the user has already set aside is worse than requiring
/planto reopen it.Plan state is surfaced in the tree selector so navigating to a point with a waiting continuation is visible rather than silent.
Changes
PlanMessageComponentto render plan artifacts in the transcriptTesting
npx vitest --run test/plan-message.test.ts test/tree-selector.test.ts test/footer-width.test.ts test/interactive-mode-startup-input.test.tstsgo --noEmitreports zero errors